接下來我們要把前幾天的內容封裝成一個流程,讓我們複習一下
前幾天已經取得各項api所需要的基本參數了,
1.取得nonce --Day03 永豐金API 基礎流程 -- Nonce
2.取得hashId --Day04 永豐金API 基礎流程 -- HashID
3.取得sign --Day05 永豐金API 基礎流程 -- Sign
4.取的message --Day06 永豐金API 基礎流程 -- 訊息內文
接著按照步驟,
$order_api_url = 'https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/Order'; //測試網址
public function apiService($service, $data){
//取得 Nonce 值
$Nonce = getNonce($data['ShopNo']);
//取得 HashID
$HashID = getHashID($hash);
//取得 IV
$IV = getIV($Nonce);
//取得 Sign
$Sign = getSign($data, $Nonce, $HashID);
//訊息內文 E2E 加密(先將變數為 null 移除)
$data = array_filter((array) ($data));
$Message = $this->checkMac->EncryptAesCBC(json_encode($data), $HashID, $IV);
//建立 Request
$Request = [
'Version' => '1.0.0',
'ShopNo' => ‘商家代碼’,
'APIService' => $service, //服務名稱 OrderCreate, OrderPayQuery
'Sign' => $Sign,
'Nonce' => $Nonce,
'Message' => $Message,
];
//取得永豐銀行回覆訊息 (Day3 永豐金API 基礎流程1 -- Nonce 我們之前封裝的)
$Response = WebAPI($order_api_url, $Request);
//取得 Response Nonce
$ResNonce = $Response->Nonce;
//取得 Response IV
$ResIV = getIV($ResNonce);
//取得永豐銀行訊息內文
$result = DecryptAesCBC($Response->Message, $HashID, $ResIV);
return $result;
}
這時候要注意的是最後還要做一個解密的流程,
//取得 Response Nonce
$ResNonce = $Response->Nonce;
//取得 Response IV
$ResIV = getIV($ResNonce);
//取得永豐銀行訊息內文
$result = DecryptAesCBC($Response->Message, $HashID, $ResIV);
1.取得api回傳的Nonce
2.透過該Nonce取得ResIV
3.透過一開始的HashID+ResIV進行解密(解密的函式官方有封裝)
最後就會取得call api的結果
{
"OrderNo": "A201804270001",
"ShopNo": "BA0026_001",
"TSNo": "BA002600000037",
"PayType": "A",
"Amount": 50000,
"Status": "S",
"Description": "S0000 – 處理成功",
"ATMParam": {
"AtmPayNo": "atm帳號",
"WebAtmURL": "web atb url",
"OtpURL": "Otp url"
}
}
然後就可以透過ATMParam的內容就是Day2 線上金流再做什麼?,
提到要提供給小明的付款資訊,這邊是以atm付款為範例,
詳細有哪些項目之後會陸續介紹,以上就是封裝整個call api流程的過程,
之後所有永豐金-豐收款api都是這個流程,從建立訂單到查詢都一樣,
因此花了很多篇幅在介紹,基礎流程到這裡就告一段落了,
接下來就要進入各api服務的內容,下期見。